package com.gitee.xmhzzz.mqtt.broker.lock;

import java.util.concurrent.TimeUnit;

/**
 * @InterfaceName IKeyLock
 * @Description
 * @Author wzq
 * @Date 2024/6/26 16:07
 * @Version 1.0
 */
public interface IKeyLock {

    boolean tryLock(String key);

    /**
     * 对某个key加超时锁
     * @param key 需要加锁的key
     * @param timeout 获取锁的超时时间 超过这个时间则加锁失败
     * @param timeUnit 时间单位 毫秒、秒、分、小时....
     * @return
     */
    boolean tryLock(String key, int timeout, TimeUnit timeUnit);

    /**
     * 释放锁
     * @param key 需要释放锁的key
     * @return
     */
     void unlock(String key);


}
